// pages/cart/index.js
const app = getApp()

Page({
  /**
   * 页面的初始数据
   */
  data: {
    routerPath: '',
    cartList: [],
    result: [],
    allChecked: false,
    allLength: 0,
    totalPrice: 0,
    addressInfo: ''
  },

  handleAddress() {
    // 选择微信地址
    wx.chooseAddress({
      success: res => {
        console.log('res:地址信息', res)
        this.setData({
          addressInfo: res
        })
      },
      fail: function (err) {
        console.log(err)
      }
    })
  },

  handleAllChange(e) {
    // 1. 改变自己
    if (e.detail) {
      // 2. 改变其他
      const allIds = []
      for (let item of this.data.cartList) {
        item.checked = e.detail
        allIds.push(String(item.id))
      }
      console.log('allIds:', allIds)
      this.setData({ result: allIds, allChecked: e.detail })
      // 计算总价
    } else {
      this.setData({ result: [], allChecked: false })
    }
    this.getTotolPrice()
    console.log('e.:', e.detail)
  },

  onChange(event) {
    console.log('event:item-change', event.detail)
    this.setData({
      result: event.detail
    })
    // 数组操作？
    /**
     * 1. 点击每一个item, result会push每一个id
     * 2. result
     *
     */
    if (this.data.result.length === this.data.allLength) {
      this.setData({ allChecked: true })
    } else {
      this.setData({ allChecked: false })
    }

    console.log('result:', this.data.result)
    // 计算总价   reduce 如果没有，返回undefined
    // reduce 会基于每一次的reture结果，处理下一次计算
    this.getTotolPrice()
  },

  getTotolPrice() {
    console.log('this.data.result:', this.data.result)
    const totalPrice = this.data.cartList.reduce((num, item) => {
      if (this.data.result.indexOf(String(item.id)) !== -1) {
        return num + item.num * Number(item.price)
      } else {
        return num
      }
    }, 0)
    console.log('totalPrice:', totalPrice)
    this.setData({ totalPrice })
  },

  // + 接收到子组件更新数据的信号，然后，重新让父组件对数据进行分配
  toParentAdd() {
    console.log('toParentAdd')
    this.setData({
      cartList: app.globalData.cartList
    })
  },

  // -
  toParentReduce() {
    console.log('toParentReduce')
    this.setData({
      cartList: app.globalData.cartList
    })
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    const pages = getCurrentPages()
    const route = pages.pop().route
    // console.log('apcart-----cart:', app.globalData.cartList)
    this.setData({
      routerPath: route,
      cartList: app.globalData.cartList,
      allLength: app.globalData.cartList.length
    })
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {},

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {},

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {},

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {},

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {},

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {},

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {}
})
